/*
 * exame_17Set2011.c
 *
 *  Created on: Jun 9, 2012
 *      Author: ubuntu
 */

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include<signal.h>

// varivaei globais
int conta = 0;
int nSegundos;
int pidFilho;

void tictac(int signo);

int main(int argc, char **args) {

	nSegundos = atoi(args[1]);

	int pid = fork();
	if (pid == 0) {
		while (1) {
			printf("tic\n");
			kill(getpid(), SIGSTOP);
			printf("tac\n");
			kill(getpid(), SIGSTOP);
		}
	} else {
		pidFilho = pid;

		// armadilhar o gajo
		signal(SIGALRM, tictac);
		// Voltar a pedir ao SO, para sinalizar o escalonador daque a TEMPO segundos
		alarm(1);

		wait(NULL);
		puts("puta");
	}

}

void tictac(int signo) {
	kill(pidFilho, SIGCONT);

	// Voltar a pedir ao SO, para sinalizar o escalonador daque a TEMPO segundos
	alarm(1);

	conta++;

	if (conta == nSegundos) {
		puts("mprre");
		kill(pidFilho, SIGKILL);
	}
}

